using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

using EasySeries.Dal;
using EasySeries.Metier.Compareurs;
using EasySeries.Metier.Entites;

namespace EasySeries.Metier.Services
{
    /*
     * 
     * Classe SerieService
     * Qui va effectuer les traitements relatifs aux series
     * 
     * */
    public class SerieService
    {
        /*
         * 
         * Methode d'initialisation des series auxquelles
         * l'utilisateur n'est pas abonne. Celles-ci sont
         * ensuite stockees dans le contexte applicatif.
         * 
         * */
        public static void getSeriesWithoutAbonnement(BackgroundWorker worker, DoWorkEventArgs e)
        {
            IList<Serie> series = SerieDal.getSeries(worker, e);

            IList<Serie> seriesWithoutAbonnement = new List<Serie>();

            IList<Abonnement> abonnements = (IList<Abonnement>)Program.ContexteApplicatif["easyseries.abonnements"];

            if (worker.CancellationPending || series == null)
            {
                e.Cancel = true;
                return;
            }

            foreach (Serie serie in series)
            {
                if (worker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }

                bool isAbonne = false;

                foreach (Abonnement abonnement in abonnements)
                    if (abonnement.Serie.Equals(serie))
                        isAbonne = true;

                if (!isAbonne)
                    seriesWithoutAbonnement.Add(serie);
            }

            ArrayList.Adapter((IList)seriesWithoutAbonnement).Sort(new SerieCompareur());

            Program.ContexteApplicatif["easyseries.series"] = seriesWithoutAbonnement;
            // Program.ContexteApplicatif.Add("easyseries.series", seriesWithoutAbonnement);
        }
    }
}
